package com.linkdood.app.service;

import com.linkdood.app.domain.Attachment;
import com.linkdood.app.dto.AttachmentDTO;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.client.RestTemplate;
import java.io.IOException;
import java.security.KeyManagementException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.util.List;
import java.util.Map;

/**
 * 附件
 * @author YunJ
 */
public interface AttachmentService {
    Map<String, Boolean> save(List<AttachmentDTO> attachments);

    List<Attachment> get();

    String getFileName(String id);

    /**
     * 下载 Attachment 中 的文件
     */
    void downloadFile(List<String> idList);

    /**
     * 下载 Attachment 中的文件
     *
     * @param attachmentList 文件列表
     */
    void syncFile(List<Attachment> attachmentList);

    /**
     * 删除文件下载成功的记录
     */
    void deleteSuccessFile();

    /**
     * 定时同步下载 attachment 中未下载的文件
     */
    void syncAttachmentFile();

    void decryptByBase64(String base64, String fileName, String accountId);

    /**
     * 大文件上传接口
     * @param base64
     * @param burstSize
     * @param fileIndex
     * @param fileNumber
     * @param fileId
     * @param fileName
     * @param fileHash
     * @throws IOException
     */
    Map<String, String> saveBase64(@RequestParam String base64, @RequestParam Long burstSize,
                                                  @RequestParam Long fileIndex, @RequestParam Long fileNumber,
                                                  @RequestParam String fileId, @RequestParam String fileName,
                                                  @RequestParam String fileHash) throws IOException;

    /**
     * 设置忽略 ssl 证书
     * 下载的链接是 https 请求，但是链接域名的证书有问题，会导致请求后出现 SSLPeerUnverifiedException 异常，所以设置忽略 ssl 证书
     */
    RestTemplate getRestTemplate() throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException;

}
